/* eslint react/no-multi-comp:0, no-console:0 */

import BaseMixin from '../../_util/BaseMixin';
import createDOMForm from '../src/createDOMForm';
import { Modal } from 'ant-design-vue';
import { regionStyle, errorStyle } from './styles';

const Form = {
  mixins: [BaseMixin],
  props: {
    form: Object,
  },

  data() {
    return { visible: false };
  },
  methods: {
    onSubmit(e) {
      e.preventDefault();
      this.form.validateFieldsAndScroll((error, values) => {
        if (!error) {
          console.log('ok', values);
        } else {
          console.log('error', error, values);
        }
      });
    },

    onCancel() {
      this.setState({ visible: false });
    },

    open() {
      this.setState({ visible: true });
    },
  },

  render() {
    const { getFieldProps, getFieldError } = this.form;
    return (
      <div
        style={{
          margin: '20px',
        }}
      >
        <h2>modal</h2>
        <Modal
          visible={this.visible}
          bodyStyle={{
            height: '200px',
            overflow: 'auto',
          }}
          onCancel={this.onCancel}
          title="modal"
        >
          <div ref="dialogContent">
            <form onSubmit={this.onSubmit}>
              <input
                {...getFieldProps('required', { rules: [{ required: true, message: '必填' }] })}
              />
              <div style={errorStyle}>
                {getFieldError('required') ? (
                  getFieldError('required').join(',')
                ) : (
                  <b
                    style={{
                      visibility: 'hidden',
                    }}
                  >
                    1
                  </b>
                )}
              </div>
              <div
                style={{
                  marginTop: '300px',
                }}
              >
                <button>submit</button>
              </div>
            </form>
          </div>
        </Modal>
        <div style={regionStyle}>
          <button onClick={this.open}>open</button>
        </div>
      </div>
    );
  },
};
export default createDOMForm()(Form);
